/**
 * 发送get异步请求
 * @param {string} url 请求地址
 * @param {object} params 请求参数
 * @param {string/undefined} type  返回的数据类型
 * @param {object} headers 自定义请求头
 * @returns promise
 */

function get(url,params,type,headers = {}){
    const p = new Promise((resolve, reject) => {
        const xhr = new XMLHttpRequest();
        xhr.onreadystatechange = () =>{
            if(xhr.readyState === 4){
                if(xhr.status === 200){
                    let res = xhr.responseText;
                    if(type === "json") res = JSON.parse(res);
                    resolve(res);
                }else{
                    reject(xhr.status);
                }
            }
        };
        let temp = [];
        for (let key in params){
            temp.push(`${key}=${params[key]}`);
        }
        xhr.open('get',`${url}?${temp.join('&')}`);
        for (let key in headers){
            xhr.setRequestHeader(key,headers[key]);
        }
        xhr.send(null);
    });
    return p;
}


/**
 * 发送post异步请求
 * @param {string} url 请求地址
 * @param {object} params 请求参数
 * @param {string/undefined} type  返回的数据类型
 * @param {object} headers 自定义请求头
 * @returns promise
 */
function post(url,params,type,headers = {}){
    const p = new Promise((resolve, reject) => {
        const xhr = new XMLHttpRequest();
        xhr.onreadystatechange = () =>{
            if(xhr.readyState === 4){
                if(xhr.status === 200){
                    let res = xhr.responseText;
                    if(type === "json") res = JSON.parse(res);
                    resolve(res);
                }else{
                    reject(xhr.status);
                }
            }
        };
        let temp = [];
        for (let key in params){
            temp.push(`${key}=${params[key]}`);
        }
        xhr.open('post',url);
        xhr.setRequestHeader("content-type", "application/x-www-form-urlencoded");
        for (let key in headers){
            xhr.setRequestHeader(key,headers[key]);
        }
        xhr.send(temp.join('&'));
    });
    return p;
}